package model;

import java.util.ArrayList;
import java.util.List;

/**
 * 借阅者类，管理借阅记录和借阅行为。
 */
public class Borrower {
    private final String id;
    private final String name;
    private final List<Resource> borrowedResources;

    /**
     * 构造方法，初始化借阅者信息。
     * @param id 借阅者ID
     * @param name 借阅者姓名
     */
    public Borrower(String id, String name) {
        this.id = id;
        this.name = name;
        this.borrowedResources = new ArrayList<>();
    }

    /**
     * 获取借阅者ID。
     * @return ID
     */
    public String getId() {
        return id;
    }

    /**
     * 获取借阅者姓名。
     * @return 姓名
     */
    public String getName() {
        return name;
    }

    /**
     * 借阅资源。
     * @param resource 要借阅的资源
     * @return 是否成功借阅（若已借满5个则失败）
     */
    public boolean borrowResource(Resource resource) {
        if (borrowedResources.size() >= 5) {
            return false; // 借阅上限
        }
        return borrowedResources.add(resource);
    }

    /**
     * 归还资源。
     * @param resource 要归还的资源
     * @return 是否成功归还
     */
    public boolean returnResource(Resource resource) {
        return borrowedResources.remove(resource);
    }

    /**
     * 获取当前借阅的资源列表。
     * @return 借阅列表
     */
    public List<Resource> getBorrowedResources() {
        return borrowedResources;
    }

    /**
     * 重写 toString 方法，显示借阅者的基本信息。
     * @return 格式化字符串
     */
    @Override
    public String toString() {
        return String.format("Borrower [ID: %s, Name: %s, Items Borrowed: %d]",
                id, name, borrowedResources.size());
    }

    /**
     * 生成测试用的预填充借阅者列表。
     * @return 包含多个借阅者的列表
     */
    public static java.util.List<Borrower> getSampleBorrowers() {
        java.util.List<Borrower> borrowers = new java.util.ArrayList<>();
        borrowers.add(new Borrower("U001", "张三"));
        borrowers.add(new Borrower("U002", "李四"));
        borrowers.add(new Borrower("U003", "王五"));
        return borrowers;
    }
}